package com.xiaozhameng.study.bootrest.boot2test.config;

import com.xiaozhameng.study.bootrest.vo.Pet;
import com.xiaozhameng.study.bootrest.vo.User;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;

/**
 * 功能描述：自己的配置类
 *
 * @Configuration 使用示例
 * 1、配置类里面使用@Bean标注在方法上给容器中注入组件，默认也是单例的
 * 2、配置类本身也是组件
 * 3、proxyBeanMethods ，代理bean的方法
 * Full 模式（proxyBeanMethods = true ）， 保证每个@Bean 注解方法被调用多少次返回的都是单例的bean
 * Lite 模式（proxyBeanMethods = false） 每个@Bean 方法被调用多少次都是新建一个bean
 * 注意：组件依赖必须使用Full模式，其他则默认是Lite 模式
 * @author: xiaozhameng
 * @date: 2021/2/5 4:23 下午
 */
@Configuration(proxyBeanMethods = false)
public class MyConfig {

    @Bean
    public User user() {
        return User.builder()
                .userName("test1")
                .age(18)
                .pet(pet())
                .build();
    }

    @Bean("tom")
    public Pet pet() {
        return Pet.builder()
                .name("哈士奇")
                .build();
    }
}
